package com.sort;

/**
 * 直接插入排序算法实现 <br>
 * • 思想：每步将一个待排序的记录，按其顺序码大小插入到前面已经排序的字序列的合适位置，直到全部插入排序完为止。 <br>
 * • 关键问题：在前面已经排好序的序列中找到合适的插入位置。<br>
 * 
 * @author yaojinshan
 * @since 2018-03-29 9:40
 */
public class 直接插入排序 {

	public static void main(String[] args) {
		int[] a = { 49, 38, 65, 97, 76, 13, 27, 49, 78, 34, 12, 64, 1 };
		System.out.println("排序之前的数组排列：");
		SortUtils.printArray(a);
		int temp;//临时值
		System.out.println("排序中的数组排列：");
		//从数组第二个位置开始进行排序，第一个不用比对 
		for(int j = 1; j < a.length; j++){
			//循环比较当前值 a[j] 和 前边的值大小关系  如果出现小于情况，则在互换位置后  所有数值向后移
			for (int k = 0; k < j; k++) {
				// 第j个位置的值 和 前边的值的大小
				if(a[j] < a[k]){
					//如果 a[j] 小于 a[k] 则 a[k] 和  a[j] 互换位置
					temp = a[k];
					a[k] = a[j];
					a[j] = temp;
				}
			}
			SortUtils.printArray(a);
		}
	}
}
